﻿using Aurora.WebApp.Filters;
using Aurora.WebApp.Helpers;
using Aurora.WebApp.ViewModel.Branch;
using Aurora.WebApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Aurora.WebApp.Controllers
{
    public class BranchController : BaseController
    {
        //
        // GET: /Branch/

        [AppAuthorize(AppRol.Administrador)]
        [ViewParameter(Section: "Mantenimientos", PageIcon: "fa fa-map-marker", SubSection: "Sucursales")]
        public ActionResult LstSucursalesAll(int? np)
        {
            ListSucursalesViewModel ViewModel = new ListSucursalesViewModel();
            ViewModel.CargarDatos(CargarDatosContext(), np, string.Empty, string.Empty);
            return View(ViewModel);
        }
        [HttpPost]
        [AppAuthorize(AppRol.Administrador)]
        [ViewParameter(Section: "Mantenimientos", PageIcon: "fa fa-map-marker", SubSection: "Sucursales")]
        public ActionResult LstSucursalesAll(int? np, string SUC_CONTACTO, string SUC_DIRECCION)
        {
            ListSucursalesViewModel ViewModel = new ListSucursalesViewModel();
            ViewModel.CargarDatos(CargarDatosContext(), np, SUC_CONTACTO, SUC_DIRECCION);
            return View(ViewModel);
        }

        [AppAuthorize(AppRol.Administrador)]
        [ViewParameter(Section: "Mantenimientos", PageIcon: "fa fa-map-marker", SubSection: "Sucursales")]
        public ActionResult AddEditSucursal(int? SUC_ID)
        {
            AddEditSucursalViewModel ViewModel = new AddEditSucursalViewModel();
            ViewModel.CargarDatos(CargarDatosContext(), SUC_ID);
            return View(ViewModel);
        }

        [HttpPost]
        public ActionResult AddEditSucursal(AddEditSucursalViewModel ViewModel)
        {
            try
            {
                if (ViewModel.SUC_ID.HasValue)
                {
                    Sucursal _sucursal = context.Sucursal.FirstOrDefault(x => x.SUC_ID == ViewModel.SUC_ID);
                    if (_sucursal != null)
                    {
                        _sucursal.SUC_CONTACTO = ViewModel.SUC_CONTACTO;
                        _sucursal.CLI_ID = ViewModel.CLI_ID;
                        _sucursal.SUC_DIRECCION = ViewModel.SUC_DIRECCION;
                        _sucursal.SUC_OBSERVACIONES = ViewModel.SUC_OBSERVACIONES;
                        _sucursal.SUC_TELEFONO = ViewModel.SUC_TELEFONO;
                        context.Entry(_sucursal).State = System.Data.EntityState.Modified;
                    }
                }
                else
                {
                    Sucursal _sucursal = new Sucursal();
                    _sucursal.SUC_CONTACTO = ViewModel.SUC_CONTACTO;
                    _sucursal.SUC_DIRECCION = ViewModel.SUC_DIRECCION;
                    _sucursal.SUC_ESTADO = ConstantHelpers.EST_ACTIVO;
                    _sucursal.SUC_OBSERVACIONES = ViewModel.SUC_OBSERVACIONES;
                    _sucursal.SUC_TELEFONO= ViewModel.SUC_TELEFONO;
                    _sucursal.CLI_ID = ViewModel.CLI_ID;
                    context.Sucursal.Add(_sucursal);
                }
                context.SaveChanges();
                PostMessage(MessageType.Success);
            }
            catch { PostMessage(MessageType.Error); }
            return RedirectToAction("LstSucursalesAll");
        }

        [AppAuthorize(AppRol.Administrador)]
        public ActionResult ConfirmDeleteSucursal(int SUC_ID)
        {
            DeleteSucursalViewModel ViewModel = new DeleteSucursalViewModel();
            ViewModel.CargarDatos(CargarDatosContext(), SUC_ID);
            return PartialView("_DeleteSucursal", ViewModel);
        }

        [HttpPost]
        public ActionResult DeleteSucursal(int SUC_ID)
        {
            try
            {
                Sucursal _sucursal = context.Sucursal.FirstOrDefault(x => x.SUC_ID == SUC_ID);
                if (_sucursal != null)
                {
                    if (_sucursal.TrabajadorXSucursal.Count > 0) PostMessage(MessageType.Info, "No se puede eliminar el elemento porque tiene asignaciones pendientes");
                    else
                    {
                        _sucursal.SUC_ESTADO = ConstantHelpers.EST_INACTIVO;
                        PostMessage(MessageType.Success);
                    }
                }
                context.SaveChanges();
            }
            catch { PostMessage(MessageType.Error); }
            return RedirectToAction("LstSucursalesAll");
        }

    }
}
